# -*- coding:utf-8 -*-
__author__ = 'LangJin'
__date__ = "2022-4-13"
__doc__ = "公共方法"
from loguru import logger
import hashlib


def encry(k):
    """
    @功能    :字符串md5加密
    @参数    :k字符串
    @返回值  :md5加密后的字符串
    @时间    :2022/04/28 16:17:57
    @作者    :浪晋
    @版本    :1.0
    """
    try:
        if type(k) is not str:
            raise Exception("加密失败，参数不是字符串类型")
        m = hashlib.md5()
        m.update(k.encode('utf-8'))
        return m.hexdigest()
    except Exception as e:
        logger.error(f"异常原因:{e}")
        raise e
    

def build_tree(data, parentId=0):
    """
    @功能    :处理数据库中的树结构数据
    @参数    :
    @返回值  :
    @时间    :2023/12/21 21:32:21
    @作者    :浪晋
    @版本    :1.0
    """
    tree = []
    for item in data:
        if item['parentId'] == parentId:
            children = build_tree(data, item['id'])
            if children:
                item['children'] = children
            tree.append(item)
    return tree


def traverse_tree(data,userobj):
    """
    @功能    :遍历部门树
    @参数    :
    @返回值  :
    @时间    :2024/01/12 17:22:57
    @作者    :浪晋
    @版本    :1.0
    """
    for item in data:
        children = item.get('children')
        if children:
            traverse_tree(children,userobj)
        else:
            for key,value in userobj.items():
                if key == item['id']:
                    item['children'] = value
    return data